/*字符串新增的特性
1.unicode表示法
2.遍历接口
3.字符串模板
4.新增的十种方法（需要插件支持兼容  babel-polyfill）
*/
{
  console.log('a', '\u0061'); //a,a
  // 当unicode超过两个字节的时候  需要把编码用大括号包裹起来
  console.log('w', '\u20BB7'); //w ,₻7
  console.log('w', '\u{20BB7}'); //w,𠮷
}

{
  let s = '𠮷';
  // unicode大于两个字节了就当做四个字节来处理，所以是length是2
  console.log('length', s.length); //length:2
  console.log('0', s.charAt(0)); //0 �
  console.log('1', s.charAt(1)); //1 �
  console.log('2', s.charCodeAt(0)); // 55362
  console.log('3', s.charCodeAt(1)); //57271
  //综上所诉，在es5里面对unicode处理的不是很到位
  let s2 = '𠮷a';
  console.log('length', s2.length);
  console.log('code0', s2.codePointAt(0)); //134071
  console.log('code1', s2.codePointAt(1)); //57271
  console.log('code3', s2.codePointAt(0).toString(16)); //20bb7
  console.log('code1', s2.codePointAt(1).toString(16)); //dfb7
  console.log('code1', s2.codePointAt(2)); //97
  console.log('code1', s2.codePointAt(2).toString(16)); //61
}

{
  //es5
  console.log(String.fromCharCode('0x20bb7')); //ஷ
  //es6
  console.log(String.fromCodePoint('0x20bb7')); //𠮷
}

{
  let str = '\u{20bb7}abc';
  //es5
  for (let i = 0; i < str.length; i++) {
    console.log('es5', str[i]); //es5 � ,es5 � ,es5, a es5, b ,es5 c
  }
  //es6
  for (let code of str) {
    console.log('es6', code); //es5 𠮷 ,es5, a es5, b ,es5 c
  }
}

//判断字符串中是否包含一些字符 或者 某些是以什么开头，以什么结尾
{
  let str = 'String';
  //判断包含某些字符
  console.log('includes', str.includes('ing')); //includes true
  //判断以什么开头
  console.log('start', str.startsWith('tr')); //false
  //判断以什么结尾
  console.log('end', str.endsWith('in')); //false
}
//重复字符串然后拼接
{
  let str='abc';
  console.log(str.repeat(3));
}
//模板字符串的拼接
{
  let name='yuanmanxue';
  let info='hello World!';
  let tem=`${name}:${info}`
  console.log(tem);
}
//是es7的一个草案 需要兼容编译
{
  //返回的参数  自定义格式，第一个参数的长度，第二个长度是补白的内容，选择向前补白还是向后补白
  // console.log('1',padStart(2,'0'));//01
  // console.log('2',padEnd(2,'0'));//10
}
//标签模板，怎么用，在哪里用
{
  let user={
    name:'yuanmanxue',
    info:'Hello World'
  };
console.log(abc`i am ${user.name}:${user.info}`);//i am ,:,yuanmanxueHello World
  function abc(s,v1,v2){
    console.log(s,v1,v2);//["i am ", ":", "", raw: Array(3)] "yuanmanxue" "Hello World"
    return s+v1+v2
  };

  //综上所诉：1.可以过滤html字符串的时候防止xsm攻击的时候
            //  2.可以解决多语言的一些字符串的
}

{
  console.log(`Hi\n${1+2}`);
  //  \n 换行符不成立  因为raw给所以字符都会加\转义符
  console.log(String.raw`Hi\n${1+2}`);//Hi\n3
}
